package utility;

import java.util.Scanner;

/**
 * 为家庭收支明细表所做的辅助函数类
 */
public class Utility {
    private static Scanner scan = new Scanner(System.in);

    /**
     * 阅读用户输入确认选择，Y or N
     *
     * @return char类型
     */
    public static char readConfirmSelection() {
        char input;
        while (true) {
            input = readKeyBoard(1).toUpperCase().charAt(0);
            if (input != 'Y' && input != 'N') {
                System.out.println("请输入Y/N！");
                continue;
            }
            return input;
        }
    }

    /**
     * 阅读用户输入的字符串（8个字长以内）
     *
     * @return String类型，输入的内容
     */
    public static String readString() {
        return readKeyBoard(8);
    }

    /**
     * 阅读用户输入的数字（4位以内）
     *
     * @return int类型，输入的内容
     */
    public static int readNumber() {
        String input;
        while (true) {
            input = readKeyBoard(4);
            try {
                return Integer.parseInt(input);
            } catch (NumberFormatException e) {
                System.out.println("输入数字有误！");
            }
        }
    }

    /**
     * 阅读用户对菜单的选择
     *
     * @return char类型，输入的选择
     */
    public static char readMenuSelection() {
        char input;
        while (true) {
            input = readKeyBoard(1).charAt(0);
            if (input < '1' || input > '4') {
                System.out.println("请输入1~4！");
                continue;
            }
            return input;
        }
    }

    /**
     * 阅读用户输入，并输出
     *
     * @param limit 限制输入长度
     * @return String类型
     */
    private static String readKeyBoard(int limit) {
        String line = "";
        while (scan.hasNext()) {
            line = scan.nextLine();
            if (line.length() > limit || line.length() < 1) {
                System.out.println("输入内容太长/太短！请重新输入！");
                continue;
            }
            break;
        }
        return line;
    }
}
